#!/bin/bash
#by neil.qiao
#v1.1
#更新：
#	输入仓库名错误后，程序不会退出，可以继续输入仓库名称直至正确为止。
#待完善问题：
			对于新增的文件，不支持路径或文件名含有空格。


#定义一个函数get_char，其作用是按下任意键以继续。
get_char()
        {
        SAVEDSTTY=`stty -g`
        stty -echo
        stty cbreak
        dd if=/dev/tty bs=1 count=1 2> /dev/null
        stty -raw
        stty echo
        stty $SAVEDSTTY
        }

#输入仓库名称，赋值给变量REPO。
echo "请输入仓库名称： "
read REPO

#先判断仓库是否存在，存在则执行相关命令。
if [[ -d ../${REPO} ]]; then

#将仓库名称写入dest_process.sh文件
	sed -i "6c\DEST_REPO=${REPO}" dest_process.sh

#创建changed文件夹，用来存放modified和untracked的文件。
	mkdir changed
	cd ../${REPO}
#将modified的文件复制到changed目录。
	for FILEMOD in `git status | grep modified| awk '{print $2}'`
	do
		cp -R --parents ${FILEMOD} ../filetochange/changed
	done

#将删除的文件列表写入FILEDEL.txt文件，以供dest_process.sh以后调用。
	git status | grep deleted | awk '{print $2}' > ../filetochange/FILEDEL.txt

#将untracked的文件，复制到changed目录。
	for FILEADD in `git status | grep -v " "`
	do
		cp -R --parents ${FILEADD} ../filetochange/changed
	done
	echo "准备工作已完成!请将filetochange目录拷贝至目标仓库的同级目录下，然后运行dest_precess.sh"

#判断仓库如果不存在，提示错误信息。
elif [[ ! -d ../${REPO} ]]; then
    echo "仓库不存在！！！请输入正确的仓库名称！！！"
    ./pre_process.sh
#    sleep 2
fi

#调用get_char，暂停一下，以便让用户看清提示信息。
echo 任意键继续...
char=`get_char`
